<script setup lang="ts">
import { Button as vanButton } from 'vant'

// 需求： 点击登录按钮发送登录请求【我们直接把 13230000100   abc12345】 把拿到的用户信息 保存到 pinia
// 伪代码【假的代码】： 先把axios 进行一个配置  把pinia 进行一个配置   把  ts 进行一个配置
// 把pinia 进行一个配置

// 1 导入store 实例

import { useUserStore } from './stores'

const store = useUserStore()

import request, { request as req } from './utils/request'

import { type User } from '@/types/user'

// req('/patient/myUser', 'get').then((res) => {
//   console.log(res, 'res----')
// })
// 这里 我们做一个配置   发送请求的时候   不要在写 data  params
// rquest('url地址' , '请求方式',  携带的数据 )

// rquest('/login/password', 'post')

const login = async () => {
  const res = await req<User>('/login/password', 'POST', {
    mobile: '13230000100',
    password: 'abc12345'
  })
  //    return res  后端返回的数据 就是 res.data
  console.log(res, '====')
  // return res.data   ===> res 就是后端饭的数据
  // const res = await request({
  //   url: '/login/password',
  //   method: 'POST',
  //   data: {
  //     mobile: '13230000100',
  //     password: 'abc12345'
  //   }
  // })
  //  {  data : {后端返回的数据}}
  //  {  后端返回的数据  }
  console.log(res.data)
  console.log(res.data.token, '----res---------')
  // console.log(res.data, '-----后端返回的真实数据--------')

  store.setUser(res.data)
}

const getUserInfo = async () => {
  const { data } = await req('/patient/myUser')
  console.log(data)
}

// // <T1, T2>  表示的 是泛型  类型不确定  调用函数的时候  传递类型才确定 T1 和 T2
// // data1  和 data2 表示的是形参
function myAxios<T1, T2>(data1: T1, data2: T2) {
  // type resType = { code: number; message: string; data: T1 }

  const res = {
    data: data1,
    code: 1,
    message: 'ok'
  }

  return res.data
  // if (data2) return res.data     ===>   if (data2) return   { test: 'abc', age: 12 }

  // return res
}

// // const res = myAxios<string, number>('name', 1)

// // console.log(res.data) //

// const res = myAxios<{ test: string; age: number }, number>(
//   { test: 'abc', age: 12 },
//   123
// )

// // console.log(res.data.)
// console.log(res.)
</script>

<template>
  <h1>App</h1>

  <vanButton type="primary" size="mini" @click="login">登录按钮</vanButton>
  <vanButton type="primary" size="mini" @click="getUserInfo"
    >登获取用户信息按钮</vanButton
  >

  <h1>{{ store.user }}</h1>
</template>

<style lang="scss"></style>
